package com.jeehentor.system.service.impl;

import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jeehentor.entity.SysRoleMenu;
import com.jeehentor.system.mapper.SysRoleMenuMapper;
import com.jeehentor.system.service.ISysRoleMenuService;
import com.jeehentor.utils.SecurityUtil;
import com.jeehentor.vo.MenuVO;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 角色菜单表 服务实现类
 * </p>
 *
 * @author wzd
 * @since 2024-04-16
 */
@Service
public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRoleMenu> implements ISysRoleMenuService {

    @Override
    public void saveRoleMenu(String id, List<MenuVO> menu) {
        // 调用saveRoleMenuAndChild方法，传入id和menu
        saveRoleMenuAndChild(id, menu);
    }

    private void saveRoleMenuAndChild(String id, List<MenuVO> menu) {
        // 遍历菜单列表
        for (MenuVO menuVO:menu) {
            // 创建SysRoleMenu对象
            SysRoleMenu sysRoleMenu = new SysRoleMenu();
            // 设置菜单ID
            sysRoleMenu.setMenuId(menuVO.getId());
            // 设置角色ID
            sysRoleMenu.setRoleId(id);
            // 设置创建者
            sysRoleMenu.setCreateBy(SecurityUtil.getCurrentUser().getId());
            // 设置创建时间
            sysRoleMenu.setCreateTime(LocalDateTime.now());
            // 调用save方法，保存SysRoleMenu对象
            this.save(sysRoleMenu);
            // 如果菜单列表不为空，则递归调用saveRoleMenuAndChild方法，传入id和菜单列表
            if(CollectionUtil.isNotEmpty(menuVO.getChildren())){
                saveRoleMenuAndChild(id, menuVO.getChildren());
            }
        }
    }
}
